package br.unifil.lp2.swing.mouse.eventos;

/**
 *
 * @author Moisés Fernando Lima
 */
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class MouseTracker extends JFrame implements MouseListener, MouseMotionListener {

    private JLabel statusBar;
    //configura a GUI e reistra os tratadores de eventos do mouse
    public MouseTracker() {
        super("Demonstrando Eventos do Mouse");
        statusBar = new JLabel();
        getContentPane().add(statusBar, BorderLayout.SOUTH);

        //aplicativo espera seus próprios eventos do mouse
        addMouseListener(this);
        addMouseMotionListener(this);
        setSize(275, 100);
        setVisible(true);
    }
    //tratadores de eventos MouseListener
    //trata evento quando o mouse é liberado imediatamente após ser pressionado
    public void mouseClicked(MouseEvent event) {
        statusBar.setText("Clicked at [" + event.getX() + ", " + event.getY() + "]");
    }

    //trata evento quando o mouse é pressionado
    public void mousePressed(MouseEvent event) {
        statusBar.setText("Pressed at [" + event.getX() + ", " + event.getY() + "]");
    }

    //trata evento quando o mouse é liberado após ser arrastado
    public void mouseReleased(MouseEvent event) {
        statusBar.setText("Released at [" + event.getX() + ", " + event.getY() + "]");
    }

    //trata evento quando o mouse entra na área da janela na tela
    public void mouseEntered(MouseEvent event) {
        JOptionPane.showMessageDialog(null, "Mouse in window");
    }

    //trata evento quando o mouse sai da área da janela na tela
    public void mouseExited(MouseEvent event) {
        statusBar.setText("Mouse outside window");
    }

    //tratadores de eventos MouseMotionListener
    //trata evento quando o usuário arrasta o mouse com o botão pressionado
    public void mouseDragged(MouseEvent event) {
        statusBar.setText("Dragged at [" + event.getX() + ", " + event.getY() + "]");
    }

    //trata evento quando o usuário movimenta o mouse
    public void mouseMoved(MouseEvent event) {
        statusBar.setText("Moved at [" + event.getX() + ", " + event.getY() + "]");
    }

    public static void main(String args[]) {
        MouseTracker aplicacao = new MouseTracker();
        aplicacao.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}